The present invention relates to the translation of data from one format to another. In particular, the present invention relates to the efficient routing of data for translation.
Data translation is a common technique for converting data from one format to another so that it is better suited for a particular use. Examples of translations include encryption, compression and encoding. Encryption is typically used to secure data so that unauthorized users cannot access the data. Compression is used to reduce the number of bytes in the data by, for example, removing redundant bytes. Encoding is used to convert data from one set of representations to another set to overcome restrictions placed on the character set by a transmission channel. For example, encoding is used to convert 8-bit binary values into 7-bit ASCII values for transmission over channels that cannot handle 8-bit data.
In many applications, it is desirable to perform multiple translations on a single piece of data. Thus, data may be encrypted, encoded, and then compressed before being sent across a channel extending between two locations. With multiple translations, the system attempting to recover the data from the channel must be able to determine the types of translations that were performed on the data, and the order in which the translations were performed. Once the recovery system has this information, it can reverse the translations to recover the original data.
The simplest method for providing translation information to a recovery system is to use a fixed set of translations that are programmed into the recovery system. In this type of system, every piece of data is translated using the same set of translations in the same order. This method minimizes the amount of translation information that must be passed across the channel but lacks the flexibility that would allow translations to be selected dynamically as data or applications require.
In an alternative method, each translator on the production side creates a translation header that is attached to the translated data produced by the translator. Thus, an encryption translator attaches an encryption header to the encrypted data it produces, and a compression translator attaches a compression header to the compressed data it produces.
In this alternative method, each translator creates its header without reference to earlier translations. In fact, each translator treats existing headers that accompany the data as a portion of the data. Thus, if a piece of data is encrypted and then compressed, the compression translator will compress the encryption header in the same manner that it compresses the encrypted data. This obscures the encryption header in the compressed data so that it is not apparent to the recovery system that the data has been encrypted simply by looking at the compressed data or the compression header.
Since earlier headers are obscured by later translations, the recovery system is only able to identify the last translation performed on a piece of data it receives from the channel. Thus, the recovery system cannot determine from the channel data if it has all of the translation tools necessary to recover the original message. As such, it must begin to translate the data with the hope that it will have all of the necessary tools. If after performing a number of translations on the data, the recovery system encounters a translation it cannot handle, the recovery system must reject the data. If this occurs, any earlier translations performed by the recovery system needlessly wasted computer resources. For wireless devices, such as handheld computers, the wasting of computer resources reduces the performance of the device by drawing power and computing time away from other processes.